#include "Gauss3DPenta6.h"
#include <cmath>

using SG::DataStructure::Common::Real;
using namespace SG::FEMSolver::Element;

std::size_t SG::FEMSolver::Element::Gauss3DPenta6::nPoint = 6;

Gauss3DPenta6::Gauss3DPenta6 ()
:integPointSet (nPoint)
{
    const Real a{2.0 / 3.0};
    const Real b{1.0 / 6.0};
    const Real c{sqrt (3.0) / 3.0};
    integPointSet[0].m_x      =  a;
    integPointSet[0].m_y      =  b;
    integPointSet[0].m_z      = -c;
    integPointSet[0].m_weight = 1.0 / 6.0;

    integPointSet[1].m_x      =  b;
    integPointSet[1].m_y      =  a;
    integPointSet[1].m_z      = -c;
    integPointSet[1].m_weight = 1.0 / 6.0;

    integPointSet[2].m_x      =  b;
    integPointSet[2].m_y      =  b;
    integPointSet[2].m_z      = -c;
    integPointSet[2].m_weight = 1.0 / 6.0;

    integPointSet[3].m_x      =  a;
    integPointSet[3].m_y      =  b;
    integPointSet[3].m_z      =  c;
    integPointSet[3].m_weight = 1.0 / 6.0;

    integPointSet[4].m_x      =  b;
    integPointSet[4].m_y      =  a;
    integPointSet[4].m_z      =  c;
    integPointSet[4].m_weight = 1.0 / 6.0;

    integPointSet[5].m_x      =  b;
    integPointSet[5].m_y      =  b;
    integPointSet[5].m_z      =  c;
    integPointSet[5].m_weight = 1.0 / 6.0;
}